using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("LocalOptions")]
	public class LocalOptions : MonoClass
	{
		public enum LoadResult
		{
			INVALID,
			SUCCESS,
			FAIL
		}

		public static int MAX_OPTIONS_LINE_LENGTH => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "LocalOptions", "MAX_OPTIONS_LINE_LENGTH");

		public static string OPTIONS_FILE_NAME => MonoClass.smethod_8(TritonHs.MainAssemblyPath, "", "LocalOptions", "OPTIONS_FILE_NAME");

		public static int LOAD_LINE_FAIL_THRESHOLD => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "LocalOptions", "LOAD_LINE_FAIL_THRESHOLD");

		public string m_path => method_4("m_path");

		public LoadResult m_loadResult => method_2<LoadResult>("m_loadResult");

		public int m_currentLineVersion => method_2<int>("m_currentLineVersion");

		public List<string> m_sortedKeys => method_3<Class272>("m_sortedKeys")?.method_25();

		public bool m_dirty => method_2<bool>("m_dirty");

		public LocalOptions(IntPtr address, string className)
			: base(address, className)
		{
		}

		public LocalOptions(IntPtr address)
			: this(address, "LocalOptions")
		{
		}

		public static LocalOptions Get()
		{
			return MonoClass.smethod_15<LocalOptions>(TritonHs.MainAssemblyPath, "", "LocalOptions", "Get", Array.Empty<object>());
		}

		public static void Reset()
		{
			MonoClass.smethod_17(TritonHs.MainAssemblyPath, "", "LocalOptions", "Reset");
		}

		public void Initialize()
		{
			method_8("Initialize");
		}

		public void Clear()
		{
			method_8("Clear");
		}

		public bool Has(string key)
		{
			return method_11<bool>("Has", new object[1] { key });
		}

		public void Delete(string key)
		{
			method_8("Delete", key);
		}

		public bool GetBool(string key)
		{
			return method_11<bool>("GetBool", new object[1] { key });
		}

		public int GetInt(string key)
		{
			return method_11<int>("GetInt", new object[1] { key });
		}

		public long GetLong(string key)
		{
			return method_11<long>("GetLong", new object[1] { key });
		}

		public ulong GetULong(string key)
		{
			return method_11<ulong>("GetULong", new object[1] { key });
		}

		public float GetFloat(string key)
		{
			return method_11<float>("GetFloat", new object[1] { key });
		}

		public string GetString(string key)
		{
			return method_13("GetString", key);
		}

		public void Set(string key, object val)
		{
			method_8("Set", key, val);
		}

		public bool Load()
		{
			return method_11<bool>("Load", Array.Empty<object>());
		}

		public bool Save(string triggerKey)
		{
			return method_10<bool>("Save", new Class276.Enum20[1] { Class276.Enum20.String }, new object[1] { triggerKey });
		}

		public bool Save()
		{
			return method_10<bool>("Save", new Class276.Enum20[0], Array.Empty<object>());
		}

		public void SortKeys()
		{
			method_8("SortKeys");
		}

		public int KeyComparison(string key1, string key2)
		{
			return method_11<int>("KeyComparison", new object[2] { key1, key2 });
		}
	}
}
